using System;
using System.Collections.Generic;

using MvcCms.Data;

namespace MvcCmsForum.Data
{
    public interface IForumRepository
    {
        //Forum Methods
        Forum GetForum(int id);
        Forum GetForum(string path);
        Forum CreateForum(Forum forumToCreate);
        Forum EditForum(Forum forumToEdit);
        IEnumerable<Forum> ListForums(int portalId);
        void DeleteForum(Forum forumToDelete);

        //Post Methods
        Post GetLastReply(int threadId);
        Post GetPost(int id);
        Post GetPost(string path, int forumId);
        int CreatePost(Post postToCreate);
        Post EditPost(Post postToEdit);
        IEnumerable<Post> ListPosts(int forumId);
        IEnumerable<Post> ListPortalForumsPosts(int portalId);
        IEnumerable<Post> ListUserPosts(Guid userId);
        IEnumerable<Post> ListReplies(int threadId);
        void DeletePost(Post postToDelete);

        //Vote Methods
        Vote GetVote(int postId, Guid userId);
        int GetUserVoteTotal(Guid userId);
    }
}